# 29.json序列化时，可以处理的数据类型有哪些？如何定制支持datetime类型？
import json
from datetime import datetime


class DateTimeEncoder(json.JSONEncoder):
    def default(self, obj):
        return obj.strftime('%Y-%m-%d %H:%M:%S')

class DateTimeDecoder(json.JSONDecoder):
    def decode(self, s):
        d = json.loads(s)
        dd = d.pop('now')
        dd = datetime.strptime(dd, '%Y-%m-%d %H:%M:%S')
        d['now'] = dd
        return d

datas = {
    'i': 20,
    'f': 20.1,
    's': 'hello',
    'c': '你好',
    'n': None,
    'b': True,
    'l': [1, 2, 3],
    't': (1, 2, 3),
    'd': {
        'a': 3,
    },
    # 's': {1, 2, 3}
    'now': datetime.now(),
}

data = json.dumps(datas, ensure_ascii=False, cls=DateTimeEncoder)
print(data)
data = json.loads(data, cls=DateTimeDecoder)
print(data)

